<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // api   封装了所有的接口文件
        //    首页  list.php
        //    商品分类  list.php
        //    ...    sort.php

        // 前后端联调    测试接口

        //   mock  模拟数据  json

        // api封装是为了方便与后端对接口



        // promise 是一种异步编程的解决方案

        //   then()   catch()    finally()

        //   链式调用

        //   静态方法
        //     Promise.all([])   Promise.race([])   Promise.resolve()   Promise.reject()

        //  地狱回调  --- 返回新的promise实例，然后使用链式调用

        // a()
        //     .then(data => {
        //         return b()
        //     })
        //     .then()


        // 微任务和宏任务

        //   宏任务   定时器和延时器        宿主浏览器发起的
        //   微任务   then   紧急任务       js引擎发起的

        // 每执行完一段程序就去检查微任务队列有没有需要立即执行的

        //    谁的时间先到   就先执行谁

        //    微任务和宏任务同时到时间   微任务优先



        // 构造函数
        //    new 
        //    原型对象 prototype   每一个函数都有一个属性叫做prototype , 给实例化对象提供共有的属性和方法

        //   数组，函数，字符串    {}

        // const d = new Date() ;
        // console.log(d);

        // const arr = new Array(1,2,3) ;
        // console.log(arr);



        // function cat() {
        //     const obj = {} ;
        //     obj.name = '猫' ;
        //     return obj
        // }

        // function dog() {
        //     const obj = {} ;
        //     obj.name = '狗' ;
        //     return obj
        // }

        // function pig() {
        //     const obj = {} ;
        //     obj.name = '猪' ;
        //     return obj
        // }

        // 发现每次在创建一类对象的时候，都需要写两段代码  const obj = {}    return obj    new取代了他们    this

        const c = cat() ;




        const p = new Promise((resolve , reject) => {
            let n = parseInt(Math.random() * 100) ;
            if(n % 2) {
                resolve(n)
            } else {
                reject(n)
            }
        })

        p.then(data => {
            console.log(data);
        }).catch(err => {
            console.log(err);
        })


        console.log(1);

    </script>
    
</body>
</html>